package main

import (
	"DemoTest/draw/data"
	"encoding/json"
	"github.com/gorilla/websocket"
)

// Message 消息内容
type Message struct {
	Type    int             `json:"type"` //消息类型
	Data    any             `json:"data"` //数据内容
	Connect *websocket.Conn `json:"-"`
}

func (m Message) marshal() []byte {
	marshal, _ := json.Marshal(m)
	return marshal
}

// Manager 管理
type Manager struct {
	Connections  map[*websocket.Conn]*ClientInfo //连接
	Current      *websocket.Conn                 //主持人
	CurrentKey   *data.WordKey                   //当前词
	Message      chan Message                    //信息
	IsPlay       bool                            //是否开始
	CorrectCount map[*websocket.Conn]bool        //回答正确人数
	CurrentCount int                             //次数
	Queue        []*websocket.Conn               //队列
	QueueIndex   int                             //队列位置
}

// 客户端信息
type ClientInfo struct {
	ID    string `json:"id"`
	Name  string `json:"name"`  //姓名
	Scope int    `json:"scope"` //积分
	Index int    `json:"index"` //队列中的位置
}

const (
	//信息
	MESSAGE = iota
	//加入成功
	JOINSUCCESS
	//绘制内容
	DRAW
	//开始游戏
	START
	//加入游戏
	JOIN
	//修改数据信息
	EDIT
	//下一轮
	NEXT
	//用户列表信息
	INFOS
	//游戏结束
	GAMEOVER
	//主持人
	COMPERE
)

func (m *Manager) ReGame() {
	//设置游戏关闭状态
	m.IsPlay = false
	//游戏队列归零
	m.Queue = make([]*websocket.Conn, 0)
	//当前队列位置 -1
	m.QueueIndex = -1
	//当前人
	m.Current = nil
	m.NextGameInit()
}

// 下一次游戏初始化
func (m *Manager) NextGameInit() {
	//回答正确游戏玩家map
	m.CorrectCount = make(map[*websocket.Conn]bool)
	//当前词语
	m.CurrentKey = nil
	//回答正确人数
	m.CurrentCount = 0
}
